function curry(func) {
  return function curriedFn(...args) {
    //  实际参数的个数 < 形式参数的个数 返回新的函数
    if (args.length < func.length) {
      // 返回的函数需要等待更多参数
      // 闭包
      // 第二次传递的就是arguments args是上一次传递的参数 闭包保留了下来
      return function () {
        return curriedFn(...args.concat(Array.from(arguments)))
      }
    }
    // 如果实际参数 >= 形式参数 直接调用函数执行就可以了! apply或者...
    return func(...args)
  }
}

// 函数的长度就是形参的个数
